//
//  StatusViewModel.swift
//  SinaWeiBo
//
//  Created by gxiangzi on 15/9/7.
//  Copyright © 2015年 hqu. All rights reserved.
//

import UIKit

let GXStatusNormalCell = "GXStatusNormalCell"
let GXStatusForwardCell = "GXStatusForwardCell"

class StatusViewModel: NSObject {
    /// 微博对象
    var status: Status
    
    /// 记录行高
    var rowHeight: CGFloat = 0;
    
    /// 返回返回不同的cellID
    func cellID()->String {
        
        return status.retweeted_status != nil ? GXStatusForwardCell : GXStatusNormalCell
        
    }
    
    /// 获得转发的文字
    var forwardText:String {
        let userName = status.retweeted_status?.user?.name ?? ""
        let text = status.retweeted_status?.text ?? ""
        return "@:\(userName) \(text)"
    }
 
    /// 用户头像 URL
    var userIconUrl: NSURL? {
        return NSURL(string: status.user?.profile_image_url ?? "")
    }
    /// 认证类型 -1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    /// imageWithNamed 方法能够缓存图像，所以两个计算型属性的效率不会受到影响
    /// 设置计算型属性的时候，需要考虑到性能
    var userVipImage: UIImage? {
        switch (status.user?.verified ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2, 3, 5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    /// 会员等级 1-6
    var userMemberImage: UIImage? {
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    
    
    /// 如果原创的微博有图，那么转发的微博一定没有图
    // MARK: - 添加一个属性， 来记录  thumbnail_pic
    var  thumbnail:[NSURL]?
    
    
    // 不需要缓存每组图片的，只需要缓存用户点击的图片的地址，所以只需要利用计算性的属性动态获取即可
    var bmiddleURLs:[NSURL]? {
    
        // 1.判断缩略图里面是否有地址，如果没有，就返回
        guard let urls = thumbnail else {
            return nil
        }
        
        // 获取每个url  然后转换
        var array = [NSURL]()
        
        for url in urls
        {
            // 转换成字符串，替代
            let urlName = url.absoluteString.stringByReplacingOccurrencesOfString("/thumbnail/", withString: "/bmiddle/")
            array.append(NSURL(string:urlName)!)
        }
        return array
    }
    
    // MARK: - 构造函数
    init(status: Status) {
        self.status = status
        
        if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls
        {
            thumbnail = [NSURL]()
            for dict in urls {
                
                thumbnail?.append(NSURL(string: dict["thumbnail_pic"]!)!)
            }

        }
        
        super.init()
    }
    
    override var description: String {
        return status.description + " 缩略图 URL 数组 \(thumbnail)"
    }
}
